package com.bjxst;

import java.io.FileInputStream;
import java.io.FileOutputStream;

/**通过缓冲区提高读写效率 方式二(效率快，但空间浪费)
 * 通过创建一个字节数组作为缓冲区，数组长度通过输入流对象的available()
 * 返回当前文件的预估长度定义的。在读写文件时，是在一次读写操作中完成文件读写操作。
 * 注：如果文件过大，那么对内存的占用也是比较大的。所以不建议使用该方法，用方式一*/
public class FileStreamBufferDemo {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try{
            //创建文件字节输入流对象
            fis = new FileInputStream("e:/picture/2001.png");
            fos = new FileOutputStream("e:/bb.png");
            //创建缓冲区，提高读写效率 调用fis.available()
            byte[] buff = new byte[fis.available()];
            //一次读完，不用循环
            fis.read(buff); //读到数组中
            fos.write(buff);//写到数组中
            fos.flush(); //保存到磁盘
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if (fis != null) {
                    fis.close();
                }
                if(fos !=null){
                    fos.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}
